不知道是第幾本組合語言的書,
翻到這類的章節,就跳過了,太傷腦筋,或沒有即時練習,所以…。
不懂,不會影響到之後,用工作經驗可以証明這點。
但人生總是會變,尤其每本DIY作業系統的入門書,開頭不約而同都用組合語語給你來一點騷癢,
讓你早晚要面對它。那就用人生的45天(不是30天哦),來體驗一下。
-----------------
這種感覺,就像WEB 應用程式全面入侵,即使手機APP的應用,用objective-c/java, 手機網頁也全面入侵。不會WEB應用程式,像個外星人,而要寫個稍微滿意的小網頁,又要好大
的背景知識。
-----------------
暫存器可以接受值,當你給值時,可以有幾種方式,
本篇介紹4種方式:
08FA:0100 mov bx,200 給個值
08FA:0103 mov bx,[200] 給位址裏所代表的值
08FA:0107 mov bx,ax 給暫存器的值
08FA:0109 mov [bx],ax 接值,用指向的位址,來接暫存器的值
debug中有一個e參數,
e cs:200 可以編寫位址200裏的內容,在實驗的過程中,要變動一下位址裏的值,那個FEELING才會有。
所以我會稍微調整一下順序,感覺比較流暢。
而r ip仍是筆者很激賞的指令,ip指向目前執行到的位址,如果己執行到110,你可藉由
r ip變動位址,在效果上,就是可以隨意往前往後移動位址,印象中大多語言的除錯模式,都是單向,一路往下執行,極少數可以回頭執行。r ip就是其中的極少數,
在練習中,我們可以反覆回到上一步,來練習,加深印象。
中括號**[]**,在一般語言中少用,筆者目前用到的4GL,中括號是類似substring的用法,
sr.pml01[3,5], 是取變數第3個字元開始,取5碼的長度。和組合語言語法上完全無關。
本文取材自Short Exercise on 80x86 Indirect Addressing Mode
網址是http://www.youtube.com/watch?v=qTWh-3I0gqc&feature=plcp。
C:\>debug
-a 100
08FA:0100 mov bx,200
08FA:0103 mov bx,[200]
08FA:0107 mov bx,ax
08FA:0109 mov [bx],ax
08FA:010B
-e cs:200
08FA:0200 46.cc FC.dd 8D.
-d cs:200
08FA:0200 CC DD 8D 86 D2 FE 50 E8-B4 4A 59 0B C0 75 03 E9
-r ax
AX 0000 :aabb
這樣就完成實驗的布置。
按t一步一步執行。
執行100行,
bx由原來的0000,變成0200。
執行下一步,
bx由0200,變成DDCC
注意:因為Little endian 的關係,寫入順序時,是CC DD, 實際上取用是DD CC
執行下一步,
-d cs:aabb
08FA:AAB0 - BB AA 31 00 73 ..1.s
這時候位址AABB(bx存AABB),被改成BBAA.
再做一次,
把位址aabb清為00
-e cs:aabb
08FA:AABB BB.00 AA.00 31.00 00.00 73.00
08FA:AAC0 FB.
-d cs:aab0
08FA:AAB0 F6 D3 31 C9 E8 39 00 11-C9 75 08 00 00 00 00 00 ..1..9...u......
把IP往回指向109,
按t,下一步。確實有寫回AABB。
小結:[]是取位址裏所存放的值。因為一般語言沒有位址的概念(C/C++語言是有的,用*,**&**來實作),所以這段練習筆者要特別識別清楚。
基本上,實戰的程式裏,沒人真的把位址拿來寫在程式裏,而用標籤(label)來識別,
所以把標籤和位址做一個連結,是很重要的觀念。
這篇短文撰寫時,發生一個小插曲,
就是輸入法是中文時,
在debug裏輸入會產生亂碼,這時debug產生錯亂,
按不下去,也不能跳開,最後,只好從外部關掉bochs(freedos 也關掉了)
---------------------
昨天凌晨時,課長打電話給我,人雖沒睡,但不想接了,
早上10點回課長,
說是經管部的同事,執行水晶報表,資料太多,導致當掉了(記憶體不足),
之前公司的財務系統是在舊版,印報表,就是把 data輸出到文字檔,
有跑很慢的情況,但沒當過。為了IFRS, 新會計制度,
花了幾百萬讓廠商賺,這個月是轉換到新財務系統裏的第一次月結關帳,
一日往常,財務部約8點左右關完帳,經管接著做管理報表到凌晨。
課長約11點走。我8點走。
-----------------------
課長說,IFRS的菁華是換會科,把會科定義清楚,才知道原來會科編號,每家公司原來是大同小異,
像勞務費用,一堆費用就換了會科。
-----------------------
不少人這條路愈走愈窄。
課長說,
這個廠商財務顧問的規劃,在企業裏當TIPTOP的MIS,歷練幾年後,一直都用tiptop, 就去
原廠那裏尋求高薪,因為客戶散布世界各地,常去大陸負責上線。
這個人生規劃的樣式,己經不列入筆者的參考了,
不是TIPTOP的CODE太爛的問題,
而是ERP說穿了,還是人玩人,人搞人的問題。
沒有人不成江湖。
有了人的江湖,只能風波不斷。
又到了無薪假的季節(希望是一兩季內可解除),
未來是常態,
MIS的重要性像垃圾車一樣,不能沒有它,但存在感又很弱,從垃圾車旁經過,只想加速離開。
並不會感謝它對社會國家的貢獻。感謝那麼多碩/博士投入清潔隊的公職,讓這個重要的工作,
維持著很高的人力素質。
--------------------------
加油,繼續前進。
MIS&SI 就像 黑子的籃球一樣...唯有空氣,才能存在於無形
最近無薪假統計數字一直上升,
小弟的公司竟然還調薪,
我不知道那裏走了狗屎運。
一面珍惜,一面把黑子的籃球做好,
黑子的籃球比無形還抽象,我暈了!